#ifndef _BSP_MOTION_SENSOR_H
#define _BSP_MOTION_SENSOR_H

#include "i2c.h"

typedef struct {
    float acc[3];       // 加速度 (g)
    float gyro[3];      // 角速度 (°/s)
    float temperature;  // 温度
} MPU6050_Data_t;

typedef struct {
    float acc[3];       // 加速度 (g)
    float gyro[3];      // 角速度 (°/s)
} MPU6050_DataSum_t;

typedef struct {
    I2C_HandleTypeDef* hi2c;
    uint16_t counter;          // 检测计数器
    int16_t acc_offset[3];     // 加速度传感器的零偏
    int16_t gyro_offset[3];    // 陀螺仪传感器的零偏
    MPU6050_Data_t mpu_data;   // 计算后的MPU6050传感器数据
    MPU6050_DataSum_t mpu_sum; // 加速度累积数据
    int32_t acc_sum[3];        // 加速度计采样累积
    int32_t gyro_sum[3];       // 陀螺仪采样累积
    uint8_t calibration_done;  // 校准完成标志
} BSP_MoveDetect_HandleTypeDef;

extern BSP_MoveDetect_HandleTypeDef hbmd;

void BSP_MoveDetect_Init();
void BSP_MoveDetect_Loop();

#endif